
#pragma once
#include "stdafx.h"

class CWicFormatConverter;
class CWicComponentInfo;

class CWicFormatConverterInfo : public QvObject
{
    friend class CWicFormatConverter;
    //==============================================================================
    // IWICComponentInfo
    //==============================================================================
public:
    CWicFormatConverterInfo(CWicComponentInfo *pComponentInfo);
    CWicFormatConverterInfo(CWicFormatConverterInfo const &);
    virtual ~CWicFormatConverterInfo(void);
    CWicFormatConverterInfo& operator=(CWicFormatConverterInfo const &);

    //==============================================================================
    // IWICComponentInfo
    //==============================================================================
public:
    virtual HRESULT GetPixelFormats(
        /* [in] */ UINT cFormats,
        /* [size_is][out][in] */ WICPixelFormatGUID *pPixelFormatGUIDs,
        /* [out] */ UINT *pcActual);

    virtual CWicFormatConverter* CreateFormatConverter();

    //==============================================================================
    // IWICComponentInfo
    //==============================================================================
public:
    virtual WICComponentType GetComponentType();

    virtual HRESULT GetCLSID(/* [out] */ CLSID *pclsid);

    virtual DWORD GetSigningStatus();

    virtual UINT GetAuthor(UINT cchAuthor, WCHAR *wzAuthor);

    virtual HRESULT GetVendorGUID(/* [out] */ GUID *pguidVendor);

    virtual UINT GetVersion(UINT cchVersion, WCHAR *wzVersion);

    virtual UINT GetSpecVersion(UINT cchSpecVersion, WCHAR *wzSpecVersion);

    virtual UINT GetFriendlyName(UINT cchFriendlyName, WCHAR *wzFriendlyName);

private:
    IWICFormatConverterInfo  *m_pIWICFormatConverterInfo;
};

